Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

FileOpenDialog(), a GuiCtrlSetImage()


Rekomendowane odpowiedzi

Opublikowano

Siemka,

mam problem, którego nie jest w stanie nawet zrozumieć. Mianowicie, po użyciu w skrypcie FileOpenDialog(), który zwróci nie pusty string, blokuje mi się możliwość używania GuiCtrlSetImage() (próbowałem na kontrolce Pic). Czy ktoś z Was ma podobny problem? Wie ktoś jak to naprawić? Bardzo proszę o pomoc w rozwiązaniu tego problemu. Z góry dziękuję.

 

@edit WAZNE

Dzieje się tak TYLKO po podaniu względnej ścieżki do pliku z obrazkiem.

Opublikowano

Tu problem jest szerszy. Nie chodzi o jeden przypadek

Tu masz taki przykład

GUICreate("")
$lol = GUICtrlCreatePic("pierwsza sciezka", 10, 10, 60, 60)
guisetstate()
FileOpenDialog("", "", "All (*.*)")
GUICtrlsetimage($lol, "sciezka do drugie pliku")
do
until guigetmsg() = -3

za ścieżki podstaw sobie jakieś pliki, ale pamiętaj, aby były względne.

spróbuj raz dać w oknie do wyboru pliku ok, a raz anuluj, zobaczysz różnice ^^

Opublikowano

No tak... rzeczywiście, za pierwszym razem jest rozciągnięty obrazek, a za drugim już nie.

 

Hah, mam to!

Wystarczyło poczytać helpa :P

 

 

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt ("GuiOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 449, 344, 192, 114)
$Pic1 = GUICtrlCreatePic("", 0, 0, 444, 340, $SS_BITMAP)
GUISetOnEvent ($GUI_EVENT_CLOSE, "q")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Func q()
Exit
EndFunc

Func w()
$tmp = FileOpenDialog ("Szukam...", @DesktopDir, "Wszystkie pliki (*.*)", 1+2)
StringReplace ($tmp, "|", "\")
GUICtrlSetImage ($Pic1, $tmp)
EndFunc

w()
HotKeySet ("z", "w")

While 1
Sleep (100)
WEnd

 

 

Gdzie jest błąd?

 

$Pic1 = GUICtrlCreatePic("", 0, 0, 444, 340, $SS_BITMAP)

 

W funkcji GUICtrlCreatePic niewymagane jest podanie stylu. Oryginalnie jest on ustawiony na $SS_NOTIFY. Wystarczyło podać odpowiedny styl, i wszystko bangla jak należy :)

846331404756772371599.jpeg
Opublikowano

Nie chodzi o to :P Ale masz na razie lajka za fatyge ^^

 

Spróbuj najpierw stworzyć GUI z obrazkiem jakim kolwiek

następnie użyj fileopendialog()

nawet nie musisz zapisywać do zmiennej tego co on zwróci

po fileopendialog() daj zmiane obrazka (guictrlsetimage) w kontrolce którą utworzyłeś wcześniej.

PAmiętaj aby był inny od tego co wstawiłeś na początku

 

Jeśli wybierzemy plik w file open dialog to guictrlsetimage nie działa, a jeśli damy anuluj to się zmienia.

 

Masz paczke, sprawdź sobie o co mi chodzi ^^

 

http://www.virustota...d913-1325178488

http://www65.zippysh...06682/file.html

Opublikowano

Tego to ja się domyśliłem, jednak przydało by się to rozwikłać jeśli jest jakaś moźliwość. Najwyżej będę podawał ścieżkę bezwzględną, nie ma problemu, ale już tak z czystej ciekawości.

Opublikowano
który zwróci nie pusty string

1. Niepusty razem.

 

 

2.

@WorkingDir is changed on successful return

( z funkcji FileOpenDialog )

 

 

3.

@WorkingDir Currently active working directory. (Result does not contain a trailing backslash)

 

 

 

4. Niektóre funkcje używające względnej ścieżki zawierają w którymś miejscu

#ifndef not
    #define not !
#endif

if ( not is_full_path ( function_arguments->local_path ) ) {
file_full_path = WORKING_DIR + function_arguments->local_path;
}

(or smth like that, kod poglądowy)

 

 

 

5.

FileOpenDialog ( /* ... */ )
@WorkingDir = @ScriptDir
GuiCtrlSetImage ( /* ... */ )

Powinno pomóc.

 

 

 

@EDIT

Poprawiono "Wszystkie" na "Niektóre" ;P

Ta sygnatura jest pusta.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...